SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[parDescuentaHaberes] 

@Subservicio INT,
@Descripcion  VARCHAR(100) = NULL
AS

DECLARE @NormaInicioSubServicio INT

SELECT @NormaInicioSubServicio =  normainicio FROM tb_SubserviciosAgentes WHERE idSubServicio = @Subservicio


SELECT DISTINCT 
    tb_Agentes.Nombres, tb_Afiliaciones.NumeroAfiliado, 
    upper(rtrim(ltrim(tb_Organizaciones.Nombre))) AS Nombre, 
    tb_Licencias.Descripcion AS Licencia, CONVERT(varchar, 
    tb_CargosSalariales.IdCargo) 
    + ' - ' + tb_CargosSalariales.Cargo AS CargoDescripcion, 
    tb_SituacionRevista.Descripcion AS SituacionRevista, 
    tb_SubServiciosAgentes.FechaAlta, 
    ni.Descripcion AS NormaInicio, nf.Descripcion AS NormaFin, 
    tb_SubServiciosAgentes.FechaBaja, 
    tb_SituacionesLaborales.Descripcion AS SituacionLaboral, 
    tb_SubServiciosAgentes.idSubServicio, 
    tb_ColaDeMovimientos.Observaciones, 
    tb_Normas.Descripcion AS Norma, tb_Licencias.AvalLegal, 
    tb_ServiciosAgentes.horas,
	tb_Funciones.regimensalarial ,
    CASE tb_Funciones.regimensalarial WHEN 12 THEN CONVERT(varchar, tb_Funciones.IdFuncion)  + ' - ' + tb_Funciones.Descripcion 
				    	            ELSE CONVERT(varchar,  tb_Funciones.IdFuncion)  + ' - ' + tb_Funciones.descripcion + ' de ' + 
						        CONVERT(varchar,  (SELECT SUM(horas)
									  FROM tb_serviciosagentes sa
									  INNER JOIN tb_subserviciosagentes ss ON ss.servicioagente = sa.idservicioagente
									  --WHERE regimensalarial =13 AND normainicio IN (SELECT normainicio FROM tb_SubserviciosAgentes WHERE idSubServicio = @subservicio)))
									-- ADRI Fijate este cambio
									 WHERE regimensalarial =13 AND normainicio = @NormaInicioSubServicio))
						     + ' horas cátedras' END AS Cargo,
     Loc.Localidad, Tb_Agentes.Documento,
     tb_Plazas.CUPOF,
---agregado 20/05/2009 por modificaciones para el Paro
    CASE WHEN dbo.tb_Plazas.RegimenSalarial = 12 THEN dbo.tb_SubserviciosAgentes.ObligacionesDiasDescontados ELSE 0 end AS DiasaDescontar,
     CASE WHEN dbo.tb_Plazas.RegimenSalarial = 13 THEN dbo.tb_SubserviciosAgentes.ObligacionesDiasDescontados ELSE 0 end AS ObligaDescontar
--Fin Agregado
	-- ADRI fijate si la linea que sigue debe estar, ya que de la plaza de movimientos no deberiamos sacar las obligaciones, EL UNICO TEMA SERIA PARA VIEJAS NORMAS
	--(SELECT ISNULL(SUM(ISNULL(ObligacionesADescontar,0)),0) FROM tb_PlazasDeMovimiento PM2 INNER JOIN tb_SubServiciosAgentes SSP ON SSP.idSubServicio = PM2.Servicio WHERE SSP.NormaInicio = tb_SubserviciosAgentes.NormaInicio) AS Obligaciones
FROM tb_Agentes 
	LEFT OUTER JOIN tb_Afiliaciones ON tb_Agentes.idAgente = tb_Afiliaciones.idAgente 
	INNER JOIN tb_ServiciosAgentes ON tb_Agentes.idAgente = tb_ServiciosAgentes.Agente 
	INNER JOIN tb_SubServiciosAgentes ON tb_ServiciosAgentes.idServicioAgente = tb_SubServiciosAgentes.ServicioAgente
    LEFT OUTER JOIN tb_Licencias ON tb_SubServiciosAgentes.Licencia = tb_Licencias.idLicencia 
    INNER JOIN tb_SituacionRevista ON tb_ServiciosAgentes.SituacionRevista = tb_SituacionRevista.idSituacionRevista
    INNER JOIN tb_SituacionesLaborales ON tb_SubServiciosAgentes.SituacionLaboral = tb_SituacionesLaborales.idSituacionLaboral
    INNER JOIN tb_Plazas ON tb_SubServiciosAgentes.Plaza = tb_Plazas.idPlaza 
    INNER JOIN tb_Organizaciones ON tb_Plazas.Organizacion = tb_Organizaciones.idOrganizaciones 
    INNER JOIN tb_Funciones ON tb_Plazas.Funcion = tb_Funciones.idFuncion 
    LEFT OUTER JOIN tb_Normas ON tb_SubServiciosAgentes.NormaInicio = tb_Normas.idNorma 
    LEFT OUTER JOIN tb_PlazasDeMovimiento ON tb_Plazas.idPlaza = tb_PlazasDeMovimiento.idPlaza AND tb_PlazasDeMovimiento.Servicio = tb_SubServiciosAgentes.idSubServicio
    LEFT OUTER JOIN tb_ColaDeMovimientos ON tb_ColaDeMovimientos.idCola = tb_PlazasDeMovimiento.idCola AND tb_ColaDeMovimientos.Agente = tb_Agentes.idAgente 
    LEFT OUTER JOIN tb_normas ni ON tb_subserviciosagentes.NormaInicio = ni.idNorma 
    LEFT OUTER JOIN tb_normas nf ON tb_subserviciosagentes.NormaFin = nf.IdNorma 
    INNER JOIN tb_CargosSalariales ON tb_CargosSalariales.IdCargo = tb_ServiciosAgentes.CargoSalarial
    INNER JOIN Tb_Localidades Loc ON Tb_Organizaciones.Localidad = Loc.IdLocalidad
WHERE (tb_SubServiciosAgentes.Licencia IS NOT NULL) AND  organismo = 1
	 -- ADRI Fijate este cambio
	-- AND normainicio IN (SELECT normainicio FROM tb_SubserviciosAgentes WHERE idSubServicio = @Subservicio)
	 AND normainicio = @NormaInicioSubServicio
GO
GRANT EXECUTE ON  [dbo].[parDescuentaHaberes] TO [public]
GO
